import json

import requests
from openpyxl import Workbook
from io import BytesIO


def upload_excel(token, userId, rowData):
    # 创建一个Workbook对象
    wb = Workbook()
    # 激活第一个sheet
    ws = wb.active
    # 优化写法
    ws.append([
        'CIP分类（必填项）', '营销分类（必填项）', '合同分类（必填项）', 'ISBN（必填项）', '出版者（必填项）', '品名（必填项）',
        '版次 （必填项）', '定价（必填项）',
        '进折（必填项）', '出版年月（必填项）', '作者 （必填项）', '计量单位（必填项）', '是否有电子书（必填项，请选择）',
        '线上线下权限（必填项，请选择）', '内容简介（必填项）',
        '主题词（必填项）', '供应商商品ID', '丛书名', '开本 ', '印张', '装帧 ', '纸张', '印次', '印刷时间', '适读对象',
        '首印数', '编者 ', '译者 ', '绘者', '财务分类',
        '封面图片名称', '商品图片名称'
    ])
    # a = [
    #     'G613.6', 'SE05', '少儿类', '9787573147295', '吉林出版集团股份有限公司', '幼儿创意美术画册1', '1', '18.8', '55',
    #     '2024-04', '范丽', '册', '否',
    #     '线上线下通用',
    #     '《幼儿创意美术画册1》包含了点连线、掌印画、棉签点画、添画、创意画、指印画、纸团印画7种风格主题，能够激发幼儿的绘画兴趣，发挥幼儿的想象力，锻炼幼儿的动手能力，书中内容按照从简到难的顺序编排，有小蜜蜂采蜜、茂盛的树、爸爸的胡子、蒲公英、仙人掌、凶猛的鲨鱼、七星瓢虫、小鸟飞飞、点点变魔术、毛线球、蝌蚪宝宝、斑点豹、狮子的头发、公主裙、火龙果、斑点狗16幅主题。书中内容编排细致，让孩子先描线，然后根据彩色例图涂色，既能增强孩子手指的灵活性，还能培养他们对色彩的感知和运用能力，充分发挥孩子的想象力。',
    #     '学前教育、幼儿教育', '', '', '8', '4', '01', 'OFS', '1', '', '儿童', '5000', '田野', '', '', '10010005', '', ''
    # ]
    ws.append(rowData)
    # 保存Excel文件到内存中
    excel_buffer = BytesIO()
    wb.save(excel_buffer)
    # 将光标移动到文件的开头
    excel_buffer.seek(0)
    headers = {
        'Authorization': 'Bearer ' + token,
    }
    files = {
        'Gysid': (None, userId),
        'Userid': (None, userId),
        'UploadEnum': (None, '1'),
        'file': (
            '一般图书导入模板.xlsx', excel_buffer, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'),
    }

    response = requests.post('http://b2bjkfw.ppm.cn/api/GoodsBaseInfo/UploadBooks', headers=headers, files=files,
                             verify=False)
    excel_buffer.close()
    response_json = json.loads(response.text)
    if response_json['Code'] == 200:
        return {'code': 200, 'message': '操作成功！', 'reason': response_json}
    else:
        return {'code': 0, 'message': '操作失败！', 'reason': response_json}
